《Deep Learning》(2)-线性代数

介绍线性代数和矩阵的一些操作

2.1 标量,向量,矩阵和张量

  • 标量:只是一个数字。
  • 向量:一串数字,相当于一维数组。一般默认向量都是列向量。
  • 矩阵:一个2维的数组,需要用2个索引才可以确定其中一个元素。例如第$i$行,$j$列。
  • 张量:维数大于2的数组,例如一个3维的张量A,需要坐标$(i,j,k)$才能确定其中一个元素。

矩阵的转置:
$$ (A^T)_{i,j}=A_{j,k} $$
向量只有一行/一列,向量转置可以看做只有一列的矩阵的转置。标量转置还是它自己。

矩阵加法,$A,B$都是矩阵
$$ C = A + B $$
表示:
$$ C_{i,j}=A_{i,j}+B_{i,j} $$
标量加或者乘以矩阵,$B$是矩阵,$a,c$是标量:
$$ D=a \cdot B + c $$
表示:
$$ D_{i,j}=a \cdot B_{i,j} + c $$
向量和矩阵相加,虽然看上去不那么合适,但是在深度学习中经常看到,$A$是矩阵,$b$是向量,那么:
$$
C=A+b
$$
表示:
$$ C_{i,j}=A_{i,j} + b_j $$
即$A$的每一行都加上$b$。

2.2 矩阵、向量的乘

$A$是$m \times n$的矩阵,$B$是$n \times p$的矩阵,那么
$$
C=AB
$$
$C$是$m \times p$的矩阵。其中
$$ C_{i,j}=\sum_kA_{i,k}B_{k,j} $$
上面的这种矩阵乘法叫做element-wise product或Hadamard product,表示为$A \odot B$
还有一种矩阵乘法,叫做doc product,即点乘,这时两个矩阵维数相同,例如
$$
C=AB
$$
表示
$$ C_{i,j}=A_{i,j}B_{i,j} $$
矩阵乘法满足一些乘法额定律:
分配律:
$$
A(B+C)=AB+AC
$$
结合律
$$
A(BC)=(AB)C
$$

不满足交换律,但是向量相乘满足交换律
$$
x^Ty=y^Tx
$$

矩阵乘积的转置有如下形式
$$
(AB)^T=B^TA^T
$$
除了上面的性质外,还应该知道一些特性:
线性等式:
$$
Ax=b
$$
其中$A \in R^{m \times n}$是矩阵,$b \in R^m$是向量,$A,b$都是已知的,$x \in R^n$是未知的。上面的矩阵乘法的等式相当于提供了表达等式的一种方式。

2.3 矩阵求逆和单位矩阵

假设$I_n$是一个单位矩阵,$I_n \in R^{m \times n}$,那么
$$ \forall x \in R^n, I_n x = x $$
单位矩阵,对角线上的数字都是1,其他部分数字全是0。

菊展$A$的逆表示为$A^{-1}$,有
$$ A^{-1}A=I_n $$
那么2.2节中的等式
$$
Ax=b
$$
可以求解得到
$$ x=A^{-1}b $$
当然,$A^{-1}$的存在是有条件的,不是每个矩阵都存在逆矩阵的。

当逆矩阵$A^{-1}$存在时,有不同的算法来闭式计算它。但是在计算机中,表示小数的精确度有限,因此有时并不能十分精确的得到$A^{-1}$,只能得到一个近似的估计值。

2.4 线性依赖和跨度

等式
$$
Ax=b
$$
如果$A^{-1}$,那么上面的等式对于不同的$b$必须只有一个解。但是也可能存在没有解或者有无数个解。对于特定具体的$b$,如果$x$和$y$都是解,那么下面也是一个解
$$ z=\alpha x + (1-\alpha)y $$
也是一个解。其中$\alpha$是实数,那么这样就存在无数个解。

为了分析上面等式有多少个解,把$A$的每一列看做不同的方向,有多少条路可以到达$b$。这样,$x$的每个元素表示在对应的方向上走多远,$x_i$表示在第$i$列上移动多远:
$$ Ax=\sum_i x_i A_{:,i} $$
上式这个操作叫做线性组合。

一个向量集合的生成空间是:这个向量集线性组合的所有点组成的空间。

$Ax=B$是否有解,在于$b$是否在$A$列向量集合的线性空间中。这个特殊的范围叫做列空间。

为了使$Ax=b$有解,$b \in R^m$,矩阵$A$的列空间应该包含$R^m$。矩阵有$n$列,即$n \geq m$。

$n \geq m$也只是必要条件,不是充分条件。因为有些列可能是冗余的;例如2列完全形同。这样的冗余叫做线性依赖。如果一个向量集线性独立,那么这个集合中的任何一个向量,都不能由其他向量的线性组合得到。这样,如果矩阵$A$的列空间包含$R^m$,那么它至少要有$m$个线性独立的列向量。这才是$Ax=b$有解的充分必要条件。

为了使矩阵$A$的逆存在,对于每一个$b$,等式$Ax=b$都应该至多有一个解。这样$A$最多有$m$列,否则可能会有多个解。

总和上面,矩阵$A$必须是个方阵,即$m=n$,且$A$的列线性独立。这样的矩阵叫做奇异矩阵

只有$A$是奇异矩阵时才可以使用矩阵求逆的方法求解。

2.5 范数

范数可以衡量向量的大小,一个向量的$L^p$范数定义如下:
$$ ||x||_p=\big(\sum_i |x_i|^p\big)^{\frac{1}{p}} $$
其中$p \in R, p \geq 1$

范数可以看做是向量到一个标量的映射函数,只要符合以下性质,都可以看做范数:
$f(x) = 0 \Rightarrow x=0$
$f(x+y) \leq f(x) + f(y)$(三角不等式)
$\forall \alpha \in R, f(\alpha x) = |\alpha|f(x)$

$L^2$范数是著名的欧几里得范数,它是原点到向量的欧拉距离。它可以省去下标,简写为$||x||$,$L^2$的平方形式等于$x^T x$。

$平方形式的L^2$范数在机器学习中用的最广,它的导数只和对应的项有关。但是平方形式的$L^2$范数在原点附近时,增长太慢。在一些机器学习的应用中,要十分严格区分0和非0的区别,这时可以使用$L^1$范数
$$ ||x||_1=\sum_i|x_i| $$
有时需要向量中非零元素的大小,有些人称作$L^0$范数,实际上没有$L^0$范数,可以使用$L^1$范数取代它。

在机器学习中经常用到$L^{\infty}$范数,称作最大范数(max norm),它的简化形式就是向量中最大数的幅度
$$ ||x||_{\infty}=\max_i|x_i| $$
在深度学习中,经常需要衡量矩阵的大小,这时使用Frobenius范数
$$ ||A||_F=\sqrt{\sum_{i,j}A_{i,j}^2} $$
和向量的$L^2$范数类似。

两个向量的点乘可以写作范数的形式
$$ x^T y = ||x||_2 ||y||_2 \cos \theta $$
其中$\theta$是$x$和$y$的夹角。

2.6特殊矩阵和向量

对角矩阵:只有对角元素非零,其他元素都为零。$D$是对角元素,那么$D_{i,j}=0, i \neq j$。单位矩阵$I$就是对角矩阵。diag($v$)表示对角方形矩阵的对角元素组成的向量。计算和对角方阵的的乘积十分高效,例如计算diag($v$)$x$=$v \odot x$。对角元素不为零的对角方阵才存在逆矩阵,$diag(v)^{-1}=diag([1/v_1,…,1/v_n]^T)$

对角矩阵不一定是方形矩阵,但是只有方形对角矩阵才存在逆矩阵。非方形的对角矩阵相乘的代价也很小。

对称矩形是矩阵等于其转置
$$ A = A^T $$
生成矩阵时,如果由2个变量的函数生成,且变量顺序无关,那么经常会生成对称矩阵,因为对称矩阵中$A{i,j}=A{j,i}$。

单位向量是指其范围为1
$$ ||v||_2=1 $$
如果两个向量$x,y$正交,那么$x^Ty=0$;如果这两个向量的范数不为零,那么它们之间的角度为90度。在$R^n$中,至多有n个互相正交的非零向量。如果正交向量的范数为1,那么叫做标准正交。

正交矩阵的行和列都是正交的
$$ A^TA=AA^T=I $$

$$ A^{-1}=A^T $$

可以看出,计算正交矩阵的逆十分简单。

2.7 特征分解

数学上的物体,可以分解。例如12可以分解为2x2x3;这样可以得知它不能被5整除,但是可以被3整除。同理,矩阵也可以分解。

用的最广的矩阵分解是特征向量和特征值。矩阵$A$的非零特征向量$v$,$A$乘以它可以得到缩放/放大的$v$
$$ A v = \lambda v $$
其中,$\lambda$是对应的特征值。上式还有另一种形式$v^T A=\lambda v^T$。

如果$v$是特征向量,那么它缩放后依然是特征向量,所以我们只关心单位特征向量。

假设$A$有$n$个线性无关的特征向量${v^{(1)}, …, v^{(n)}}$,对应的特征值为${\lambda_1,…,\lambda_n}$,可以把特征向量当做一列来组成一个矩阵$V = [v^{(1)}, …, v^{(n)}]$,把特征值来组合成一个向量$\lambda = [\lambda_1,…,\lambda_n]$,$A$的特征分解为
$$ A = V diag(\lambda)V^{-1} $$
可以通过特征值和特征向量来重建$A$。把矩阵分解为特征值和特征向量有助于我们分析理解矩阵。

不是每个矩阵都能分解为特征值和特征向量,有时分解还会产生复数。幸运的是,本书讲解的矩阵大部分都是可以简单分解的。注意一点,每个实数对称矩阵都可以分解,其特征值和特征向量都为实数:
$$ A=Q \Lambda Q^T $$
其中$Q$是由$A$的特征向量组成的正交矩阵,$\Lambda$是对角矩阵。特征值$\Lambda_{i,i}$对应着矩阵$Q$的第$i$列$Q_{:,i}$

一个实对称矩阵$A$肯定有特征值分解,且特征值分解可能不唯一。如果两个或两个以上的特征向量有相等的特征值,由正交向量组成的集合和这个特征值也是矩阵的特征值分解。为了方便,我们常常将$\Lambda$降序排序;这样的话只有在特征值唯一时,特征分解才唯一。

矩阵的特征值分解给我们带来许多便利。例如,只有矩阵所有特征值为0时,它才是奇异矩阵。实数对称矩阵相乘可以用特征值分解优化,$f(x)=x^TAx$,且$||x||_2=1$;如果$x$是$A$的一个特征值,那么函数结果就是对应的特征向量;函数的最大值和最小值是对应特征值得最大值和最小值。

一个矩阵的所有特征值都大于0,那么就是正定的;如果都大于等于0,那么就是半正定的;如果都小于零,那么就是负定的;如果都小于等于零,那么就是半负定的。

2.8奇异值分解

上一节讲到了特征值分解,这一节来学奇异值分解(singular value decomposition, SVD)。像特征值分解一样,奇异值分解也可以帮助发现矩阵的一些特性;且奇异值分解更具一般性,每个矩阵都有奇异值分解。

特征分解形式为:
$$ A= V diag(\lambda) V^{-1} $$
奇异值分解形式类似:
$$ A= U D V^T $$
这里,假设$A$是$m \times n$的矩阵,那么$U$是$m \times m$的矩阵,$D$是$m \times n$的矩阵, $V$是$n \times n$的矩阵。且这三个矩阵有特殊的结构:$U$和$V$都是正交矩阵,$D$是对角矩阵,它不一定是方阵。

$D$叫做$A$的奇异值,$U$的列是$A$的左奇异向量(left-singular vector),$V$的列是$A$的右奇异向量(right-singular vector)。

还可以通过简单的推导,得出奇异值分解和特征分解的关系。
$$ A A^T=(U D V^T)(U D V^T)^T=U D V^T V D^T U^T=U D (V^T V) D^T U^T=U (DD^T) U^{-1} $$
因为$U$和$V$是正交矩阵:
$$ UU^T=I, \qquad VV^T=I $$
这样,可以把$U$当做$AA^T$的特征向量。同理,$V$是$A^TA$的特征向量。

奇异值分解的最有用的特性在于可以泛化,使非方阵可以部分求逆。

2.9 广义伪逆矩阵

非方阵的逆矩阵没有定义。假设要对下面等式求解:
$$ Ax=y $$
$B$是$A$左逆矩阵,等式左边乘以$B$可以得到
$$ x=By $$
$A$到$B$的映射可能不唯一。$A$为$m \times n$,如果$m >n $,可能没有解;如果$m < n$可能有多个解。广义伪逆矩阵让我们可以无限接近,$A$的广义伪逆矩阵定义:
$$ A^+ = \lim_{\alpha \searrow 0}(A^TA + \alpha I)^{-1} A^T $$
实际中使用的不是上面的形式,而是奇异值分解定义的形式:
$$ A^+ = V D^+ D^T $$
$D^+$是把对角矩阵$D$伪逆矩阵,它是把用到了非零元素,之后由结果矩阵转置得到???(is obtained by taking the reciprocal of its non-zero element then taking the transpose of the resulting matrix)。

当$A$中,$m < n$时,可以使用伪逆矩阵中的一个。尤其是经常用到的一个解为:$x=A^+ y$,其中$||x||_2$是所有解中最小的。

当$A$中,$m > n$是可能没有解。这时使用伪逆转置,可以得到离$x$欧拉距离最近的解,即$$||Ax-y||_2$尽可能小。

2.10迹算子

迹算子可以得到矩阵对角线元素的和:
$$ Tr(A)=\sum_i A_{i,j} $$
迹算子很重要,一些操作可以转换为求和操作,而求和操作需要用到矩阵相乘和迹算子。

例如Frobenius范数定义
$$ ||A||_F = \sqrt{Tr(AA^T)} $$
以迹算子形式定义一些操作,可以得到很多迹算子的性质。例如
$$ Tr(A) = Tr(A^T) $$
如果是方阵,那么还有循环移动不变的性质
$$ Tr(A B C) = TR(C B A) = Tr(B C A) $$
更一般的写法:
$$ Tr(\prod_{i=1}^{n} F^{(i)}) = Tr(F^{(n)} \prod_{i=1}^{n-1} F^{(i)}) $$
循环移动可能得到的矩阵大小都不同,例如$A \in R^{m \times n}$,$B \in R^{n \times m}$:
$$ Tr(AB) = Tr(BA) $$
$AB \in R^{m \times m}$,$BA \in R^{n \times n}$。

对于标量:$a=Tr(a)$。

2.11行列式

一个方矩阵的行列式由 det($A$)表示,它是一个把矩阵映射到实数的函数。一个矩阵的行列式等于其矩阵所有特征值的乘积。行列式的绝对值可以看做矩阵的在某个空间的体积。如果行列式等于零,那么这个空间至少全部收缩到了一维空间,是它体积为零。如果行列式等于1,那么变化过程中体积不变。

2.12 例子:主成成分分析

一个简单的机器学习算法叫做主成成分分析(principal components analysis, PAC),可以使用基本的线性代数来推导。

假设现在有$m$个点的集合${x^{(1)},…,x^{(m)}}$,所有点都在空间$R^n$上。我们打算对这些点实施有损压缩操作,有损压缩意味着占用空间会减少,但是会损失精度。我们想尽可能少的损失精度。

一种方法是把这些点编码到更低的维度空间去。可以找到一种编码方法,对于每个点$x^{(i)} \in R^n$,找到一个向量$c^{(i)} \in R^l$,如果$l < n$,那么编码后的数据占用空间会减少。找到编码函数$f(x)=c$,解码函数可以重建$x$,使得$x \approx g(f(x))$

PCA就是要用到的解码函数,为了使解码简单,解码函数就是矩阵的相乘,映射回到$R^n$。$g(c)=Dc$,其中$D \in R^{n \times l}$,它是定义解码的矩阵。

计算最优的解码矩阵是个难题,为了使问题简单,PCA限制$D$的列互相正交。(注意$D$不是正交矩阵,除非$l=n$)。

这时解还不唯一,为了使解唯一,再加上限制:$D$的列有单位范数。

为了把想法转换为可以实现的算法,首先计算怎么为每个点$x$生成最优的$c^*$。一种方法是尽量减小$x$和它重建后点的距离,在主成分析中,使用$L^2$范数:
$$ c^* = \arg_c \min ||x-g(c)||_2 $$
转换为使用$L^2$的平方形式,因为它非负,且对于非负参数单调递增
$$ c^* = \arg_c \min||x-g(c)||_2^2 $$
即最小化
$$ (x-g(c))^T(x-g(c)) $$
由$L^2$定义展开
$$ x^Tx - x^Tg(c) - g(c)^Tx + g(c)^Tg(c) $$
因为$x^Tg(c), g(c)^Tx$都是标量
$$ x^Tx - 2x^Tg(c) + g(c)^T g(c) $$
因为只依赖变量$c$,可以忽略第一项
$$ c^*=\arg_c \min -2x^T g(c) + g(c)^T g(c) $$
把g(c)的定义代入上式
$$ c^*=\arg_c \min -2x^TDc + c^T D^T D c $$

$$ =\arg_c \min -2x^TDc + c^T I_l c $$
因为$D$的列正交且有单位范数
$$ =\arg_c \min-2x^T Dc + c^Tc $$
可以通过矢量微积分来求得上式的解:
$$ \Delta_c(-2x^TDc + c^Tc)=0 $$

$$ -2D^Tx+2c=0 $$
得到:
$$ c=D^Tx $$
这样算法非常高效,对$x$编码,只需要矩阵乘法
$$ f(x)=D^T x $$
再前面加上矩阵乘法,可以定义PCA重建矩阵操作
$$ \gamma (x) = g(f(x))=DD^Tx $$
下一步要选择编码矩阵$D$。编码矩阵$D$是的输入矩阵和重建后的矩阵之间的$L^2$最小。编解码使用同一个矩阵,使得计算所有维度的误差矩阵的Frobenius范数最小:
$$ D^*=\arg_D \min \sqrt{\sum_{i,j}(x_j^{(i)} - r(x^{(i)})_j)^2} \qquad subject \quad to \quad D^TD=I_l $$
先假设$l=1$,因为$\gamma (x)=D^TDx$,上式变为:
$$ d^*=\arg_d \min_d \sum_i||x^{(i)} - dd^Tx^{(i)}||_2^2 \qquad subject \quad to \quad ||d||_2=1 $$
上式是最直接的写法,但是在文体上更习惯把四叔放到左边,可以这样写
$$ d^*=\arg_d \min_d \sum_i||x^{(i)} - d^Tx^{(i)}d||_2^2 \qquad subject \quad to \quad ||d||_2=1 $$
或者把矩阵转置写到一起
$$ d^*=\arg_d \min_d \sum_i||x^{(i)} - x^{(i)}dd^T||_2^2 \qquad subject \quad to \quad ||d||_2=1 $$
把上面的向量写出矩阵形式,$X \in R^{m,n}$
$$ d^* = \arg_d \min |X-Xdd^T||_F^2 \quad subject \quad to \quad d^Td=1 $$
忽略掉上面的约束项,简化Forbenius范式
$$ \arg_d \min Tr( (X- Xdd^t)^T (X- Xdd^T) ) $$
展开后为
$$ \arg_d \min -Tr(X^TXdd^T) - Tr(dd^TX^TX) + Tr(dd^TX^TXdd^T) $$
和$d$无关的项不影响上面公式的结果
$$ \arg_d \min -2Tr(X^TXdd^T) + Tr(dd^TX^TXdd^T) $$
对迹算子内擦矩阵进行循环移位
$$ \arg_d \min - 2Tr(X^TXdd^T) + Tr(X^TXdd^Tdd^T) $$
有约束项$d^Td=1$得到
$$ \arg_d \min -2Tr(X^TXdd^T) + Tr(X^TXdd^T) \quad subject \quad to \quad d^Td=1 $$

$$ \arg_d \min -Tr(X^TXdd^T) \quad subject \quad to \quad d^Td=1 $$ $$ \arg_d \max Tr(X^TXdd^T) \quad subject \quad to \quad d^Td=1 $$ $$ \arg_d \max Tr(d^TX^TXd) \quad subject \quad to \quad d^Td=1 $$

可以由特征值分解解决上面的最优化问题,即$d$是矩阵$X^TX$对应的最大的特征值。

在一般情况下,即$l > 1$,矩阵$D$是$l$个最大特征值对应的特征向量。

文章目录
  1. 1. 2.1 标量,向量,矩阵和张量
  2. 2. 2.2 矩阵、向量的乘
  3. 3. 2.3 矩阵求逆和单位矩阵
  4. 4. 2.4 线性依赖和跨度
  5. 5. 2.5 范数
  6. 6. 2.6特殊矩阵和向量
  7. 7. 2.7 特征分解
  8. 8. 2.8奇异值分解
  9. 9. 2.9 广义伪逆矩阵
  10. 10. 2.10迹算子
  11. 11. 2.11行列式
  12. 12. 2.12 例子:主成成分分析
,
#add by kangyabing